﻿#ifndef __GAF_ANIMATION_H__
#define __GAF_ANIMATION_H__

namespace GAF
{
	//class Player
		class Animation; //-* Runnable
}
typedef GAF::Animation			GAF_CAnimation;


#include "GAF_Define.h"
#include "GAF_Player.h"
#include "GAF_Timer.h"
#include "GAF_Bundle.h"

#define GAF_PLAYER_RUN			GAF::PLAYER_OTHER

namespace GAF
{
	/// 动画效果基类
	class _ABSTRACT Animation : public Player, public Runnable
	{
	public:
		Animation();
		virtual ~Animation();

	public:
		// 动画效果间隔时间属性
		DIM_ATTRIB(TimeTicks, Interval);

	public:
		/// 精确计时
		void			ExactTimer();
	protected:
		/// 播放对象操作
		virtual bool		Playing(Bundle* pParam);
		/// 暂停对象操作
		virtual bool		Pauseing();
		/// 停止对象操作
		virtual bool		Stoping();

		/**
		 *  @name 事件成员
		 */
		// 继承事件
// 		virtual bool		OnPlay(GAF_CBundle* pParam);	// 当播放对象时
// 		virtual bool		OnPause();			// 当暂停对象时
// 		virtual bool		OnStop();			// 当停止对象时

		// 定义事件
	protected:
		/// 当动画效果更新时
		virtual bool		OnUpdate(TimeTicks ttUsed)
					{return true;}
	private:
		void			OnRun(RunBase* pRunBase);

	private:
		Timer*			m_pTimer;
		TimeTicks		m_ttLast;

		bool			m_isExactTimer;

	};
}

#endif